package modelo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import modelo.Conexion;
import modelo.Jugador;



public class JugadorDAO {
	private String cod;
	private Integer max;
	
	
		public JugadorDAO(int difi) {
			super();
		}	
		public String dificultad(int dificultad){
			
			if(dificultad == 1){
				cod = "facil";
				return cod;
				}
			else if(dificultad == 2){
				cod = "intermedio";
				return cod;
			}
			else{
				cod = "dificil";
				return cod;
			}
		}
		
		
		public int mayorPuntaje(int dif){
			cod = dificultad(dif);
			String cd;
			try {
				String tiraSQL= "SELECT MAX(tiempo)as codig FROM (select * from jugador where categoria ='" + cod + "' order by tiempo limit 5) AS MEJORES";
				ResultSet rs = Conexion.consultar(tiraSQL);
				if (rs.next()) {
					cd = rs.getString("codig");
					max = Integer.parseInt(cd);
					return max;
				}
				return (Integer) null;
			}catch (SQLException ex) {
				ex.printStackTrace();
				return (Integer) null;
			}
		}
		
		public int contar(int nivel){
			cod = dificultad(nivel);
			try {
				String tiraSQL = "select count(nombre) as cant from jugador where categoria ='" + cod + "' limit 5";
				ResultSet rc = Conexion.consultar(tiraSQL);
				rc.next();
				return (int) rc.getLong("cant");	
			} catch (SQLException e) {
				e.printStackTrace();
			}
			return (Integer) null;
		}
		
		public List<Jugador> cincoPrimeros(int nivel){
			List<Jugador> jugadores = new ArrayList<Jugador>();
			cod = dificultad(nivel);
			String tiraSQL = "select * from jugador where categoria ='" + cod + "' order by tiempo limit 5";
			ResultSet rs = Conexion.consultar(tiraSQL);		
			try {				
				long lim = 5;
				if (contar(nivel)<5)
					lim = contar(nivel);								
				for (int i = 0; i< lim;i++){
					rs.next();					
					jugadores.add(new Jugador(rs.getString("nombre"), rs.getString("apellido"), rs.getLong("tiempo"), cod));
				}	
			} catch (SQLException e) {
				e.printStackTrace();
			}
				
			return jugadores;			
		}			
		public void registrarJugador(Jugador jug) {
			String tiraSQL = "insert into jugador" + "(cedula, nombre, apellido, edad, tiempo, categoria, palabra)" +
			"values" + "('cedula', '" + jug.getNombre() +"','" + jug.getApellido() +"', 0 ,'" + jug.getTiempo() +"','"+ jug.getCategoria() +"')";
			Conexion.ejecutar(tiraSQL);	
	
			}
	}
